/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controller;

import Model.ModeloM;
import MsSQL.ConMsSQL;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Maryluz
 */
public class ModeloC {
    
    public List<ModeloM> listarModelo(int tienda) {
        Connection conexion = ConMsSQL.obtenerConexion();
        if (conexion != null) {
            try {
                List<ModeloM> vctModelo = new ArrayList<>();
                String sql = "select m.idmodelo,m.nomModelo,a.stock, m.precio, m.precioMayor from dbo.TBL_MODELO m, TBL_ALMACEN a, TBL_TIENDA t  where m.idmodelo=a.idModelo and a.idTienda=t.idtienda and t.idtienda="+tienda+" and CONVERT(date,a.fecha)=convert(date,(select MAX(a1.fecha) from TBL_ALMACEN a1 where a1.idModelo=a.idModelo and a1.idTienda="+tienda+")) and stdModelo<>0 order by nomtienda";

                Statement instruccionSQL = conexion.createStatement();
                ResultSet rs = instruccionSQL.executeQuery(sql);

                if (rs != null) {
                    while (rs.next()) {
                        ModeloM oM = new ModeloM();
                        oM.setIdmodelo(rs.getInt(1));
                        oM.setNomModelo(rs.getString(2));
                        oM.setStockModelo(rs.getInt(3));
                        oM.setPrecio(rs.getDouble(4)); 
                        oM.setPrecioMayor(rs.getDouble(5)); 
                        //System.out.println(rs.getDouble(5));
                        vctModelo.add(oM);
                    }
                    return vctModelo;
                }
                return null;
            } catch (SQLException e) {
                // System.out.print(e);
                return null;
            } catch (Exception e) {
                //System.out.print(e);
                return null;
            } finally {
                try {
                    conexion.close();
                } catch (SQLException ex) {
                    System.out.print("No se puede cerrar la conexion");
                }
            }
        }
        return null;
    }

    public List<ModeloM> listarModelosTaller() {
        Connection conexion = ConMsSQL.obtenerConexion();
        if (conexion != null) {
            try {
                List<ModeloM> vctPrendas = new ArrayList<>();
                String sql = "select idModelo,nomModelo, talla,precio,precioMayor from TBL_MODELO where stdModelo<>0";

                Statement instruccionSQL = conexion.createStatement();
                ResultSet rs = instruccionSQL.executeQuery(sql);

                if (rs != null) {
                    while (rs.next()) {
                        ModeloM oM = new ModeloM();
                        oM.setIdmodelo(rs.getInt(1));
                        oM.setNomModelo(rs.getString(2));
                        oM.setTalla(rs.getString(3));
                        oM.setPrecio(rs.getDouble(4));
                        oM.setPrecioMayor(rs.getDouble(5));
                        vctPrendas.add(oM);
                    }
                    return vctPrendas;
                }
                return null;
            } catch (SQLException e) {
                 System.out.print(e);
                return null;
            } catch (Exception e) {
                System.out.print(e);
                return null;
            } finally {
                try {
                    conexion.close();
                } catch (SQLException ex) {
                    System.out.print("No se puede cerrar la conexion");
                }
            }
        }
        return null;
    }
 
    
    public boolean agregarModelo(ModeloM ovM) {
        Connection cnn = ConMsSQL.obtenerConexion();
        try {
            if (cnn != null) {
                String sql = "{call sp_addModelo(?,?,?,?,?)}";
                CallableStatement cs = cnn.prepareCall(sql);
                cs.setString(1, ovM.getNomModelo());
                cs.setString(2, ovM.getTalla());
                cs.setString(3, ovM.getIdcolor());
                cs.setDouble(4, ovM.getPrecio());
                cs.setDouble(5, ovM.getPrecioMayor());
                ResultSet rs = cs.executeQuery();
                if (rs != null) {
                    while (rs.next()) {
                       return true;
                    }
                    return true;
                }
                return false;
            }
        } catch (Exception e) {
            return false;
        }
        return false;
    }

     public List<ModeloM> consultarModelo(String nombre) {
        try {
            nombre = "%" + nombre + "%";
            String sql = "SELECT idmodelo, nomModelo ,talla,precio,precioMayor, fechaRegistro FROM TBL_MODELO where nomModelo like ? and stdModelo<>0";
            Connection cnn = ConMsSQL.obtenerConexion();
            PreparedStatement ps = cnn.prepareStatement(sql);
            ps.setString(1, nombre);
            
            ResultSet rs = ps.executeQuery();
            ArrayList<ModeloM> lista = new ArrayList<>();
            while (rs.next()) {
                ModeloM oM = new ModeloM();
                oM.setIdmodelo(rs.getInt(1));
                oM.setNomModelo(rs.getString(2));
                oM.setTalla(rs.getString(3));
                oM.setPrecio(rs.getDouble(4));
                oM.setPrecioMayor(rs.getDouble(5));
                oM.setFechaRegistro(rs.getString(6));
                lista.add(oM);
            }
            return lista;
        } catch (SQLException e) {
            System.out.print(e);
            return null;
        }
    }

    public boolean actualizarModelo(ModeloM ovM) {
        Connection cnn = ConMsSQL.obtenerConexion();
        try {
            if (cnn != null) {
                String sql = "{call sp_updModelo(?,?,?,?,?,?)}";
                CallableStatement cs = cnn.prepareCall(sql);
                cs.setInt(1, ovM.getIdmodelo());
                cs.setString(2, ovM.getNomModelo());
                cs.setString(3, ovM.getTalla());
                cs.setString(4, ovM.getIdcolor());
                cs.setDouble(5, ovM.getPrecio());
                cs.setDouble(6, ovM.getPrecioMayor());
                ResultSet rs = cs.executeQuery();
                if (rs != null) {
                    while (rs.next()) {
                       return true;
                    }
                    return true;
                }
                return false;
            }
        } catch (Exception e) {
            return false;
        }
        return false;
    }

    public void eliminarModelo(int idModelo)  {
        try {
            Connection cnn = ConMsSQL.obtenerConexion();
            String sql = "{call sp_delModelo("+idModelo+")}";
            CallableStatement cs = cnn.prepareCall(sql);
            cs.execute();
        } catch (SQLException e) {
             System.out.print(e);
            
        }
    }
}
